home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Internet
/
Collection of Internet.iso
/
infosrvr
/
dev
/
libhtml_.tar
/
SGML.h
< prev
Wrap
C/C++ Source or Header
|
1993-01-20
|
6KB
|
182 lines
/* SGML.h
* $Id: SGMLstream.h,v 1.3 93/01/06 18:40:29 connolly Exp Locker: connolly $
*/
#ifndef SGML_h
#define SGML_h
#include "c_dialect.h"
#include "HMDoc.h"
/*
* supported variations on the SGML declaration
*/
#ifdef SGML_DECLARATION
#include SGML_DECLARATION
#endif
#ifndef SGML_NAMELEN
#define SGML_NAMELEN 8
#endif
#ifndef SGML_LITLEN
#define SGML_LITLEN 240
#endif
#ifndef SGML_ATTCNT
#define SGML_ATTCNT 40
#endif
#ifndef SGML_TAGLVL
#define SGML_TAGLVL 24
#endif
#ifndef SGML_SHORTTAG
#define SGML_SHORTTAG 1
#endif
#ifndef SGML_UCNMCHAR
#define SGML_UCNMCHAR ".-"
#endif
/*
* SGML content types
*/
enum {
SGML_EMPTY, /* no content */
SGML_CDATA, /* character data. recognize </ only */
SGML_RCDATA, /* replaceable character data. recognize </ and &ref; */
SGML_MIXED, /* elements and parsed character data. recognize all markup */
SGML_ELEMENT /* any data found will be returned as an error*/
};
#ifndef EOF
#define EOF (-1)
#endif
enum {
SGML_record_end = -5,
SGML_entity = -4,
SGML_start_tag = -3,
SGML_end_tag = -2,
/* EOF = -1, */
SGML_error = 0
};
VOID
SGML_parseInstance PARAMS((HMStream stream, HMGetcProc getc,
HMDoc* document,
CONST HMDoc_Class *docclass));
/* documentation @@
*/
int
SGML_read PARAMS((HMStream stream,
HMGetcProc getc,
char* buf, int nbytes,
int content,
int* inout_lookahead));
/*
* PRE:
* stream -- opaque stream object
* getc -- getc method for stream. returns -1 on EOF
* buf -- where to store data
* nbytes -- how much to read MUST BE > 3!
* entities -- opaque entities object
* expand_entity -- method for entities
* (expand_entity)(entities, name, dest)
* stores the expansion of name at dest, and returns the length
* max_entity_length -- upper bound on return value of expand_entity
* content -- SGML_CDATA, SGML_RCDATA, SGML_MIXED, or SGML_ELEMENT
* inout_lookahead -- EOF or first character of input
*
* POST:
* returns value:
* @@ record_end
* SGML_start_tag ==> sgml start tag found. *inout_lookahead
* is first character of name. rest of name
* follows on stream.
* SGML_end_tag ==> sgml end tag found, like start tag
* NOTE: SGML_read attempts to discard newlines
* between tags: if *inout_lookahead == EOF, newlines
* before tags and markup declarations
* will be discarded.
* There is a pathological case where
* there are more than nbytes-4 leading newlines.
* In that case, the newlines will be treated as data,
* even though they may be between tags.
* SMGL_entity ==> entity reference found. name is in the buffer,
* null terminated
* EOF ==> EOF found before any tags or data
* (note that SGML_read may skip over newlines, comments,
* processing insructions, and markup declarations
* to get to EOF)
* *inout_lookahead is not defined.
* SGML_error ==> data found in element content, or
* possible markup was found ('<' or '&')
* and nbytes was not sufficient to determine
* whether the character was markup or data
* NOTE: if nbytes > SGML_NAMELEN+1, SGML_read is
* guaranteed not to return 0.
* *inout_lookahead is set to the last value
* read from stream.
* 0<ret<nbytes ==> ret bytes of data found, followed by
* '<', which may begin a tag, or
* '&' with insufficient room to determine
* whether it's data, or insufficient
* room for the name of the entity.
* nbytes ==> nbytes of data found.
* *inout_lookahead = EOF (ready for next call)
*/
int
SGML_read_name PARAMS((HMStream stream,
HMGetcProc getc,
char* buf,
int* inout_lookahead));
/*
* PRE:
* stream -- opaque stream object
* getc -- getc method for stream. returns -1 on EOF
* buf -- where to store name (must be at least SGML_NAMELEN chars)
* inout_lookahead -- EOF or first character of input
*
* POST:
* returns value:
* 0 ==> first character is not a name.
* 0<ret<=SGML_NAMELEN
* ==> name is ret bytes long
* folded to lower case and stored at buf.
* trailing whitespace is skipped
* *inout_lookahead = last value read from stream
*/
int
SGML_read_value PARAMS((HMStream stream,
HMGetcProc getc,
char* buf,
int* inout_lookahead));
/*
* PRE:
* stream -- opaque stream object
* getc -- getc method for stream. returns -1 on EOF
* buf -- where to store value (must be at least SGML_LITLEN chars)
* inout_lookahead -- EOF or first character of input
*
* POST:
* returns value:
* 0 ==> first character is not a letter, a digit, or a quote.
* 0<ret<=SGML_LITLEN
* ==> value is ret bytes long
* stored at buf with entities expanded
* trailing whitespace is skipped
* *inout_lookahead = last value read from stream
*/
#endif /* SGML_h */